package Generics;

import java.lang.reflect.ParameterizedType;

/**
 * @author 刘正星
 * @version v1.0
 * @package Generics
 * @data 2022/9/14 22:18
 */
public class BaseImpl <T> implements CrudRepository<T> {

    @Override
    public Iterable<T> findAll() {
        Class<T> c = getTClass();
        System.out.println(c);
        common(c);
        return null;
    }


    /**
     * 通用的方法使用泛型的class去干一些事情。
     *
     * @param c 泛型类
     */
    private void common(Class<T> c) {

    }

    /**
     * 获取 T.class
     */
    public Class<T> getTClass() {
        return (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    }
}
